/*
 * $Id: infohandle.js 48 2012-02-20 17:53:46Z rook.alex@gmail.com $
 * @description error/info/confim modal dialogs
 */

$.fn.extend({
    createInfoDialog:function (id, priority, cssclass) {
        var zinx = parseInt($().constants.zIndexBlockerBase) + parseInt(priority) + 1; //диалог  выше
        var iDlg = $("<div/>")
            .addClass("dlg-info")
            .addClass(cssclass)
            .appendTo("body")
            .setZIndex(zinx)
            .attr("id", id);

        //елемент отображения сообщений
        $("<div/>")
            .css({
                "float":"left"
            })
            .addClass("msg")
            .appendTo(iDlg);
            
                 
        //кнопка закрытия                    
        $("<div/>").
            css({
                "font-size":"x-large",
                "text-align":"right"
            })
            .attr("title", "close")
            .addClass("dlg-inputs-buttons")
            .addClass("close-btn")
            .appendTo(iDlg);

        //для авторазмера по вертикали                            
        $("<div/>").addClass("empty-helper").appendTo(iDlg);
        return iDlg;
    },
    addMsg:function (msgtext, level) {
        var dlg = $(this);
        var messages = $(".msg", dlg);
        
        if ($(".msg>p").size()>$().constants.msgCount){
            messages.html(""); //очистка списка сообщений
        }
        var msg = $("<p/>").html(msgtext);
        if (level == 1) {
            msg.css("color", "green");
        }
        if (level == 3) {
            msg.css("color", "yellow");
        }
        if (level > 3) {
            msg.css("color", "red");
        }
        messages.append(msg);
        return dlg;

    },
    addErrorMsg:function (errortxt) {
        return $(this).addMsg(errortxt, 5);
    },
    addInfoMsg:function (infotxt) {
        return $(this).addMsg(infotxt, 1);
    },
    InfoDialog:function (id) {
        var priority = 3;
        return  $().createInfoDialog(id, priority, "dlg-info-info")//создать узел диалога
            //слой блокировки для информационного диалога  возможно не нужен ?
            //.createBlocker(priority)     //создать слой блокировки
            .bindCloseBtn()//настроить кнопки закрытия
            .hover(function () {
                $(this).fadeIn("normal")
            }, function () {
            }); //всплытие по движению мыши
    },
    ErrorDialog:function (id) {
        var priority = 5;
        return  $().createInfoDialog(id, priority, "dlg-info-error")//создать узел диалога
            .createBlocker(priority)//создать слой блокировки
            .bindCloseBtn();             //настроить кнопки закрытия
    },
    addConfimMsg:function (confimtxt) {
        var dlg = $(this);
        $(".msg", dlg).html(""); //очистить список
        $("[name=conf-result]", dlg).val(""); //очистить результат действий пользователя

        var msg = $("<div/>").append(
            $("<span/>").text(confimtxt)
                .append(
                $("<input title='click Ok to confim' style='margin-left:7px' type='button' value='Ок ?'/>").click(
                    function () {
                        $("[name=conf-result]", dlg).val("Ok");
                        $(dlg).findBlocker().hide();
                        return dlg.hide().trigger("Ok.ConfimDialog", "Ok");
                    }).addClass("dlg-inputs dlg-inputs-buttons confim-btn"))
        );

        return dlg.addMsg(msg, 3);
    },
    ConfimDialog:function (id) {
        var priority = 3;
        var confResult = $("<input/>")
            .attr("type", "hidden")
            .attr("name", "conf-result");


        return  $().createInfoDialog(id, priority, "dlg-info-confim")//создать узел диалога
            .createBlocker(priority)//создать слой блокировки
            .bindCloseBtn().find(".close-btn").attr("title", "Cancel").click(
            function () {     //настроить кнопки закрытия
                $("[name=conf-result]", dlg).val("");
                $(dlg).findBlocker().hide();
                return dlg.hide().trigger("Cancel.ConfimDialog");
            }).end()
            .append(confResult);


    }
});
